package tech.aistar.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import tech.aistar.entity.Post;
import tech.aistar.entity.UserInfo;
import tech.aistar.entity.index.RankDO;
import tech.aistar.service.IPostService;
import tech.aistar.service.IUserInfoService;
import tech.aistar.service.component.RedisComponent;

import java.util.List;
import java.util.Set;

@RestController
@RequestMapping("/redis")
public class RedisController {
    @Autowired
    private IUserInfoService userInfoService;
    @Autowired
    private RedisTemplate redisTemplate;


    private static final String RANK_PREFIX = "global_rank";


    @RequestMapping("/findall")
    public List<UserInfo> findALL(){
//从redis中取出某一个key下面的list列表， 0表示从列表的第0个元素开始取，-1表示直取到倒数第一个元素，也就是整个列表的所有元素都取出来。
    List<UserInfo> list = redisTemplate.opsForList().range("userinfo", 0, -1);
        if(list.size()==0){//如果缓存中的数据为空的时候进行重新获取数据
            list=userInfoService.findAll();
     }
    return list;
}

    @RequestMapping("/delpost")
    public List<Post> delPost() {
//从redis中取出某一个key下面的list列表， 0表示从列表的第0个元素开始取，-1表示直取到倒数第一个元素，也就是整个列表的所有元素都取出来。
        List<Post> list = redisTemplate.opsForList().range("post", 0, -1);
//        List<RankDO> top = new ArrayList<>();
//        if (list.size() == 0) {//如果缓存中的数据为空的时候进行重新获取数据
//            list = postService.findAllPost();
//            for (Post l : list) {
//                redisComponent.add(RANK_PREFIX, String.valueOf(l.getPostId()), l.getPointNum());
//            }
        Set<String> keys = redisTemplate.keys("*");
        redisTemplate.delete(keys);
//            List<RankDO> lists = rankListComponent.getTopNRanks(5);
//        List<Post> lists = rankListComponent.getTopNRanks(n);
//        } else {
//            for (Post l : list) {
//                redisComponent.add(RANK_PREFIX, String.valueOf(l.getPostId()), l.getPointNum());
//            }
        return list;
    }
/**
* 根据编号获取信息实体
* @param
 * * @return
*/
    @RequestMapping("/getinfo")
    public UserInfo getinfo(@RequestParam("id") Integer userid){
        return userInfoService.getinfo(userid);
    }


}
